Откройте Vivado и нажмите Create Project.
Выберите имя и путь проекта, затем нажмите Next.
Выберите RTL Project (отметьте Do not specify sources at this time), затем нажмите Next.
Выберите правильную модель FPGA (например, xc7z020clg400-2), затем нажмите Next → Finish.
В Flow Navigator нажмите Create Block Design.
На холсте Block Design нажмите кнопку "+", чтобы добавить IP, найдите "Zynq", выберите Zynq7 Processing System и дважды щелкните, чтобы добавить его.
Нажмите Run Block Automation (это автоматически подключит интерфейс PS-PL; можно оставить настройки по умолчанию).
Memory Type: Выберите DDR3(Low). Этот выбор должен основываться на схеме. Основное различие между DDR3 и DDR3(Low) заключается в рабочем напряжении: DDR3 — 1.5В, а DDR3(Low) — 1.35В.
Memory Part: Согласно техническому описанию, используемая нами модель чипа — MT41K256M16TW-107, поэтому выбор по умолчанию обычно — MT41K256M16 RE-125. Некоторые последующие параметры будут предоставлены напрямую. Чтобы помочь понять, как настроить каждый параметр, мы выберем здесь Custom.
Effective DRAM Bus Width: Поскольку на основной плате два чипа DDR3, и каждый DDR3 имеет разрядность 16 бит, общая ширина шины данных составляет 32 бита. Остальные настройки можно оставить по умолчанию.
Конкретная конфигурация выглядит следующим образом:
Соответствующие параметры должны быть заполнены путем обращения к техническому описанию:
DRAM IC Bus Width: Шина данных MT41K256M16TW-107 имеет разрядность 16 бит, а её ёмкость составляет 4096 Мбит, что равно 512 МБ.
Speed Bin: Выберите здесь DDR3 1600K.
Согласно техническому описанию MT41K256M16TW-107, скоростной класс -107 соответствует скорости передачи данных 1866 и обратно совместим с 1600. При работе на 1600 его параметры tRCD-tRP-CL составляют 11-11-11.
Согласно странице DDR3 SDRAM - Wikipedia, когда параметры tRCD-tRP-CL составляют 11-11-11, соответствующий тип — K.
Bank Address Count, Row Address Count, Col Address Count: Эти значения можно найти на странице 15 технического описания:
CAS Latency(CL), tRCD, tRP: Их можно получить непосредственно из технического описания:
CAS Write Latency(CWL): Найдите значение в Таблице 55 технического описания:
tRC, tRASmin: Найдите значения в Таблице 55 технического описания:
tFAW: Найдите значение, обратившись к Таблице 2 и Таблице 58 в техническом описании:
Сначала установите все флажки DRAM Training:
Есть два способа заполнить оставшиеся два раздела: User Input и system calculates automatically.
Если вам нужно рассчитать их вручную, сначала выберите автоматический режим, чтобы записать задержку упаковки (поскольку задержка упаковки — это задержка передачи сигнала внутри корпуса чипа, которая не видна в Vivado), а затем выполните ручной расчет:
Формула для DQS to Clock Delay (нс) выглядит следующим образом:
Где:
Path DelayCLK0 = Общая задержка CLK0 (пс)
Path DelayDQS = Общая задержка DQS (пс)
Деление на 1000 преобразует пикосекунды (пс) в наносекунды (нс).
Проверка формулы:
a. Рассчитайте задержку пути для CLK0
b. Рассчитайте задержку пути для DQS0
c. Рассчитайте задержку DQS0 относительно тактового сигнала
d. Расчет для других сигналов DQS
Аналогично, для сигналов типа DQS1, DQS2 и т.д. просто замените соответствующие значения L и
и повторите шаги выше.
Формула для Board Delay (нс) выглядит следующим образом:
Где:
Path DelayCLK0 = Общая задержка CLK0 (пс)
Path DelayDQ = Общая задержка DQ (пс)
Деление на 1000 преобразует пикосекунды (пс) в наносекунды (нс).
Проверка формулы:
a. Сначала рассчитайте задержку пути для CLK:
Используя CLK0 в качестве примера:
Преобразуйте длину (в мм) в дюймы:
Рассчитайте задержку пути для CLK:
b. Затем рассчитайте задержку пути для (DQ[0:7]) (используя (DQ7:0) в качестве примера):
Преобразуйте длину (L_{DQ7:0}) (в мм) в дюймы:
Рассчитайте задержку пути для (DQ[0:7]):
c. Рассчитайте (Board\ Delay) по формуле:
Рассчитано: Система рассчитывает автоматически. Мы получаем длины трасс сети DDR из программного обеспечения для проектирования печатных плат (такого как Altium Designer, Cadence и т.д.), вводим их в столбец Length, и Vivado автоматически рассчитает время задержки. Интерфейс выглядит следующим образом:
Поскольку у нас два чипа DDR3, есть две пары дифференциальных тактовых сигналов. CLK0, CLK1, DQS0 и DQS1 — это сигналы для первого чипа DDR3, где CLK0/CLK1 предоставляют тактовый сигнал, а DQS0/DQS1 управляют 16-битной шиной данных. То же самое относится и ко второму чипу DDR3.
Этот раздел можно оставить с настройками по умолчанию.
Сначала объяснение "глазковой диаграммы":
Глазковая диаграмма DDR — это график, образованный наложением форм сигналов множества битов данных, наблюдаемых на осциллографе для высокоскоростных последовательных сигналов. Она названа так из-за своего сходства с "глазом". Это ключевой инструмент для оценки целостности сигнала памяти DDR (Double Data Rate).
Идеальная ширина бита: 128 единиц
Eye Min - Max (EYE_MIN - MAX): [8,108], [12,108], [12,100], [16,104]
Центр глаза (EYE CENTER): 58/128, 60/128, 56/128, 60/128
Ширина глаза (EYE WIDTH): 78.12%, 75.00%, 68.75%, 67.50%
Скорректированный глаз (EYE ADJUSTED): Конкретные данные не показаны
Ширина глаза: Процент ширины глаза указывает на стабильность сигнала. Более высокий процент означает, что сигнал более стабилен на этом канале.
Центр глаза: Значение центра глаза показывает положение сигнала на временной оси. В идеале центр глаза должен быть близок к 50% (64/128).
Eye Min - Max: Этот диапазон показывает колебание сигнала на временной оси. Меньший диапазон (например, [8,108]) указывает на меньшее колебание для сигнала на этом канале (Lane - 0).